package net.ib.mtalk.util;

import java.nio.ByteBuffer;
import java.util.UUID;

import net.ib.mntalk.protocol.Common.UUIDMsg;
import android.util.Log;

import com.google.protobuf.micro.ByteStringMicro;

public class GpbSupport {

	public static long msbOf(UUIDMsg uuid) {
		byte[] data = uuid.getMsb().toByteArray();
		return ByteBuffer.wrap(data).getLong();
	}

	public static long lsbOf(UUIDMsg uuid) {
		byte[] data = uuid.getLsb().toByteArray();
		return ByteBuffer.wrap(data).getLong();
	}
	
	public static UUIDMsg makeUuidMsg(UUID uuid) {
		return makeUuidMsg(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits());
	}

	public static UUIDMsg makeUuidMsg(long msb, long lsb) {
		return new UUIDMsg()
		.setMsb(ByteStringMicro.copyFrom(PrimitiveToBytes.toBytes(msb)))
		.setLsb(ByteStringMicro.copyFrom(PrimitiveToBytes.toBytes(lsb)));
	}

	/**
	 * UUIDMsg로 UUID를 구함(그레고리안 시간)
	 * @param uuidMsg
	 * @return
	 */
	public static UUID makeUuid(UUIDMsg uuidMsg){
		return new UUID(GpbSupport.msbOf(uuidMsg), GpbSupport.lsbOf(uuidMsg));
	}
	
	/**
	 * UUIDMsg 의 msb, lsb 값으로 UUID를 구함(그레고리안 시간)
	 * @param uuidMsb 
	 * @param uuidLsb
	 * @return UUID
	 */
	public static UUID makeUuid(long uuidMsb, long uuidLsb){
		return new UUID(uuidMsb, uuidLsb);
	}
	
	/**
	 * UUIDMsg 를 String 으로 변환 한다.
	 * @param uuidMsg
	 * @return
	 */
	public static String UuidMsgToString(UUIDMsg uuidMsg){		
		return makeUuid(uuidMsg).toString();
	}
}
